Skip to content

feat(container)!: Update image docker.dragonflydb.io/dragonflydb/dragonfly ( v1.38.1 → v2.0.0 ) - #1849

Open
chaplain-grimaldus[bot] wants to merge 1 commit into
mainfrom
renovate/docker.dragonflydb.io-dragonflydb-dragonfly-2.x
Open

chaplain-grimaldus[bot] wants to merge 1 commit into
mainfrom
renovate/docker.dragonflydb.io-dragonflydb-dragonfly-2.x

Conversation

@chaplain-grimaldus

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Update Change
docker.dragonflydb.io/dragonflydb/dragonfly major v1.38.1 → v2.0.0

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

dragonflydb/dragonfly (docker.dragonflydb.io/dragonflydb/dragonfly)

v2.0.0

Compare Source

Dragonfly v2.0.0

We have been waiting three years to bump the major version.

While this specific release does not add new major features by itself, it marks a significant milestone in our maturity, performance, and production readiness.

Dragonfly v2.0.0 expands Redis and Valkey compatibility with Valkey 9 RDB loading, GEOSEARCHSTORE, and improved replication backlog controls. Performance work reduces connection-processing and memory-accounting overhead while adding tighter controls for defragmentation and buffer retention. Tiered storage, cluster migration, streams, compressed lists, and RESP3 behavior received substantial correctness improvements. This release also strengthens RESTORE validation against malformed or incompatible payloads.

Highlights
Commands
  • Added GEOSEARCHSTORE with radius or box queries, sorting, limits, distance scores, ACL enforcement, and journaling. (#​7984)
  • Added MEMORY DEFRAGMENT-SEGMENTS [threshold] to reclaim sparsely used DashTable pages and report page usage. (#​7995)
Performance
  • Refreshes Memcached parser memory usage once per batch and skips no-op pipeline squash refreshes. (#​8246)
  • Skips reply-batch setup when no pipeline replies are in flight. (#​8224)
  • Refreshes connection-memory telemetry once per parse cycle instead of after every pipelined command. (#​8225)
  • Restores fast allocation-tracker rejection outside configured ranges and after trackers are cleared. (#​8207)
  • Adds an opt-in shared RESP V2 read buffer per proactor, disabled by default. [Projected future reduction from about 800 MB to under 1 MB for 25K connections on 32 CPUs; not realized by this commit.] (#​8145)
  • Adds configurable burst and cooldown limits for background defragmentation. [Example configuration limits defragmentation to approximately 1% of one CPU core.] (#​8115)
  • Releases oversized RDB serializer buffers after flushing. [Retained capacity is capped at 4 MiB by default; previously a 512 MiB object could leave 512 MiB allocated.] (#​8140)
  • Shrinks client input buffers after low usage and adds configuration and metrics. [Reduces the default maximum by 50%, from 64 KiB to 32 KiB.] (#​8005)
Replication
  • Loads Valkey 9 RDB hashes containing persistent and expiring fields. (#​8251)
  • Retains replication backlog entries by age and memory budget, deprecating the fixed-length option. (#​8039)
Bug fixes
  • RESTORE rejects duplicate hash fields in HASH and HASH_LISTPACK payloads. (#​8260)
  • SLOWLOG GET now returns 10 entries by default while preserving explicit counts and -1. (#​8248)
  • Makes connection memory introspection constant time by caching mutable state usage. [Reduces connection memory accounting from O(n) to O(1).] (#​8245)
  • Detects RESP commands after empty inline lines, fixing redis-cli --pipe sentinel timeouts. (#​8244)
  • Retries cluster migration finalization when pausing clients times out. (#​8240)
  • Decodes RedisShake RDB type 20 as a set listpack regardless of the footer version. (#​8227)
  • Rejects RESTORE payloads whose declared lengths exceed the remaining input, preventing remote out-of-memory crashes. (#​8222)
  • Defers container deletion during paused yielding RM iterations to prevent use-after-free. (#​8210)
  • Prevents SORT LIMIT range overflow near 32-bit limits. (#​8212)
  • Returns the Redis-compatible <index>: no such index FT.INFO error. (#​8199)
  • Makes SORT ... STORE delete the destination and return 0 when the source is missing. (#​8190)
  • Releases unused cached ParsedCommand entries in the V2 pipeline. (#​8192)
  • Reports multi-key XREADGROUP errors in command argument order. (#​8186)
  • Preserves command-family and ACL metadata when command aliases are cloned. (#​8175)
  • Validates every XREADGROUP stream before mutating consumer-group state. (#​8158)
  • Uses a startup ACL snapshot throughout Lua script execution. (#​8116)
  • Bounds incremental expired-key scanning by physical bucket, time, and item quotas. (#​8129)
  • Recomputes invalid stream memory deltas instead of wrapping cached values. [Prevents reported size from inflating from a few GiB to terabytes.] (#​8066)
  • Makes used_memory_peak_rss report peak resident memory. (#​8143)
  • Excludes commands parsed before V2 traffic logging starts. (#​8139)
  • Records migration target OOM acknowledgements and removes transferred slots. (#​8127)
  • Fixes Apple Clang 16 ARM64 crashes during float32-to-bfloat16 conversion. (#​8123)
  • Logs V2 traffic before dispatch without suspension or duplicate retry records. (#​8096)
  • Delivers queued Pub/Sub messages before V2 UNSUBSCRIBE confirmations. (#​8075)
  • Uses header-aware accounting and a fixed cutoff for tiered small-bin reclamation. (#​8081)
  • Returns null arrays for empty ZMPOP, BZMPOP, LMPOP, and BLMPOP results. (#​8092)
  • Honors ZADD GT and ZADD LT for skiplist-encoded sorted sets. (#​8091)
  • Correctly encodes RESP3 null replies for blocking stream, list, and sorted-set commands. (#​8085)
  • Rejects FT.CREATE definitions without a SCHEMA containing at least one field. (#​8054)
  • Returns the required RESP3 map shape when a blocked XREAD wakes. (#​8064)
  • Preserves offloaded hashes, updates, and Memcached flags during serialization. (#​8026)
  • Switches TLS listener contexts atomically and corrects cross-thread tls_bytes accounting. (#​8043)
  • Completes tiered SET slot and database accounting before journaling and stashing adjustments. (#​8050)
  • Always exports expired_keys_total and evicted_keys_total, including zero values. (#​8052)
  • Attributes tiered list-node operations to the correct cluster slot. (#​8046)
  • Makes XGROUP MKSTREAM create a stream only when the key is absent. (#​8057)
  • Uploads offloaded values before RENAME or MOVE transfers tiered keys. (#​8004)
  • Journals FLUSHSLOTS inside its global transaction with distinct transaction IDs. (#​8032)
  • Wakes blocked XREADGROUP clients with WRONGTYPE when a stream becomes another data type. (#​8038)
  • Replicates stored cross-shard GEORADIUS results as explicit DEL and ZADD operations. (#​8030)
  • Frees unfinished chunked values on their owning shards after incomplete RDB loads. (#​8037)
  • Keeps search-indexed hashes resident and materializes existing offloaded hashes when needed. (#​8018)
  • Wakes blocked XREADGROUP clients with NOGROUP when their stream expires. (#​8031)
  • Prevents underfilled tiered bins from repeatedly entering defragmentation. (#​8024)
  • Prevents Lua async-call detection from exhausting fiber stacks or performing unsafe rewrites. (#​7974)
  • Removes QList compression savings when compressed interior nodes are erased. (#​8023)
  • Restores the final QList node’s compressed state after partial reads. (#​8010)
  • Wakes blocked XREADGROUP clients with NOGROUP or WRONGTYPE after stream deletion or recreation. (#​8015)
  • Preserves serial semantics for connection-state commands in squashed pipelines. (#​8016)
  • Corrects compressed-list memory tracking and unsigned underflow. [Corrects approximately 13x over-reporting on a Celery-like workload.] (#​8014)
  • Copies only compressed data into replacement buffers during quicklist defragmentation. [Regression allocation fell from 32,112 bytes to 8,496 bytes.] (#​8011)
  • Validates cuckoo filter capacity and expansion bounds while adding configurable defaults. (#​7965)
Huge thanks to all the contributors! ❤️
New Contributors
What's Changed

Full Changelog: dragonflydb/dragonfly@v1.40.0...v2.0.0

v1.40.2

Compare Source

What's Changed

Tiered storage (disk offload)

  • fix(tiering): Don't cool on load — values loaded during full sync / RDB-DFS load were incorrectly pushed into the cool-tier cache; loading is no longer treated as a candidate for cooling since it isn't client traffic.
  • fix(tiering): Replace the separate write-depth limit with a single tiered_max_pending_bytes cap that covers both in-flight reads and writes, and export read/write/total usage as metrics.
  • fix(tiering): Add tiered_serialization_inflight_bytes_cap — snapshot serialization now throttles/waits when there are too many outstanding tiered reads, preventing unbounded memory growth from delayed entries during snapshotting.
  • fix: Bound small-bins traversal with TraverseBySegmentOrder (same class of fix as DeleteExpiredStep in #​8129), preventing entries from being skipped or revisited when the table resizes mid-scan; also exports additional tiering metrics/settings.
  • fix: Export small-bin entries-bytes usage in metrics/INFO.
  • feat(tiering): Add a background "repack scan" that repacks small-bins buckets with excessive wasted space; disabled by default (tiered_repack_scan_budget_us=0).

Replication / journal

  • fix(server): Bound DeleteExpiredStep traversal with TraverseBySegmentOrder (#​8129)
  • fix(server): Fix journal omit breaking on stash bucket (#​8157)
  • fix(server): Split the "journal omit" optimization into two independent decisions — skipping forced snapshot serialization vs. skipping the journal write — since the former no longer requires the latter; also adds TTL propagation for EXPIRE writes that skip serialization.
  • backport(cluster): Fix memory-accounting bug and journal FLUSHSLOTS from inside the flush transaction, avoiding replication inconsistency during slot migration (#​8061, backports #​8032)

Protocol

  • fix(facade): Reject memcached keys longer than the 250-byte protocol limit (#​8213). Previously, a long key (e.g. written via the Redis port) could be echoed back unbounded in a memcached VALUE reply, overflowing the reply buffer.

Advisory: it is advised to upgrade to this release due to the correctness bug with journaling #​8157

v1.40.1

Compare Source

This is a patch release.
What's Changed
  • Fixed connection-state handling in squashed pipelines. Commands following AUTH, SELECT, HELLO, CLIENT, or RESET now observe the updated connection state instead of stale authentication, database, or RESP protocol state (#​8016).
  • Fixed compressed QList node memory accounting and defragmentation (#​8011, #​8014).

Full Changelog: v1.40.0...v1.40.1

v1.40.0

Compare Source

Dragonfly v1.40.0

This is one of our biggest releases yet—both in terms of feature quality, total contributions, and the highest number of external contributors in the last two years.

This release delivers major new functionality alongside a large body of correctness and stability fixes for tiered storage, replication, pub/sub, and the experimental V2 I/O loop.

We added a new data type: Cuckoo Filters (CF.RESERVE, CF.ADD/ADDNX, CF.EXISTS/MEXISTS, CF.INSERT/INSERTNX, CF.INFO/COUNT/DEL/COMPACT, and RDB persistence). This brings Dragonfly to parity with RedisBloom's probabilistic structures alongside expanded Bloom filter (BF.INFO) and HyperLogLog support.

Vector search gains native-width storage across all vector dtypes, EPSILON-tuned HNSW range queries, and EF_RUNTIME control. Meanwhile, a long list of fixes hardens tiered-storage interactions with strings, hashes, lists, bitops, and HLL commands, in addition to several replication-consistency fixes around lazy TTL expiry. Performance work includes lazy lock-table registration, zero-copy GET, and replica-side command batching.

  • New Cuckoo Filter data type with full command set and RDB support.
  • Vector search now stores/computes at native declared width, plus EPSILON and EF_RUNTIME tuning for HNSW.
  • Numerous tiered-storage and replication consistency fixes (HLL, hashes, lists, bitops, hash-field TTL expiry).
Highlights
  • Added a full Cuckoo Filter data type with RDB persistence, bringing RedisBloom parity for probabilistic structures (#​7646, #​7700).
  • Vector search now stores/computes vectors at native declared width instead of always widening to FLOAT32, re

❗ Important

✂ PR body was truncated to here.


Configuration

📅 Schedule: (in timezone America/New_York)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants